home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
201-220
/
scopedisk208
/
portlist
/
showlists.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-19
|
5KB
|
172 lines
/* ShowLists.c */
/* 13 Aug 1991 At 09:58:37 */
#include <exec/execbase.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/exec.h>
#include <intuition/gadgetclass.h>
#include <intuition/screens.h>
struct ExecBase *ExecBase;
struct IntuitionBase *IntuitionBase = NULL;
struct GadToolsBase *GadToolsBase = NULL;
struct Window *WBWindow = NULL;
struct Screen *WBScreen = NULL;
APTR vi = NULL;
BOOL activated = TRUE;
struct Gadget *currgad,*g0,*g1;
struct Gadget *gadlist = NULL;
#define NUMLISTS 6
struct List *ExecLists[NUMLISTS];
#define REFRESHBUTTON 2
#define NODEGAD_ID 1
#define LVGADHEIGHT 95
#define LVGADWIDTH 165
#define LVGADY 15
#define LVGADX 13
#define LABLEN 8
static char *CycleLabels[NUMLISTS+1] = /* up to LABLEN long strings */
{ " PORTS ",
" DEVICES ",
" LIBRARY ",
" TASKWAIT ",
" RESOURCE ",
" MEMORY ",
};
void Bummer(char *errmsg)
{
puts(errmsg);
CleanExit(5);
}
int CleanExit(returnvalue)
int returnvalue;
{
if (gadlist)
FreeGadgets(gadlist);
if (vi)
FreeVisualInfo(vi);
if (WBWindow) CloseWindow (WBWindow);
if (WBScreen != NULL)
UnlockPubScreen (NULL, WBScreen);
if (GadToolsBase)
CloseLibrary ((struct Library *)GadToolsBase);
if (IntuitionBase)
CloseLibrary ((struct Library *)IntuitionBase);
if (ExecBase)
CloseLibrary ((struct Library *)ExecBase);
exit (returnvalue);
return (returnvalue);
}
void handleIDCMP(struct Window *win)
{
struct IntuiMessage *message = NULL;
struct Gadget *gad = NULL;
ULONG class, signals, signalmask;
WORD code;
int CurList=0;
signalmask = 1L << win->UserPort->mp_SigBit;
while (1)
{
signals = Wait(signalmask);
if (signals & signalmask)
while (message = (struct IntuiMessage *)GT_GetIMsg(win->UserPort))
{
class = message->Class;
code = (WORD)message->Code;
gad = (struct Gadget *) message->IAddress;
GT_ReplyIMsg(message);
/* printf("Gadget: %d, Code: %d\n",gad->GadgetID,code); */
switch(class)
{
case CLOSEWINDOW:
CleanExit(0);
case GADGETUP: /* Fall through to window activated case... */
CurList=code;
default: /* only activate message I hope */
GT_SetGadgetAttrs(g0, WBWindow, NULL,GTLV_Labels,ExecLists[CurList]);
break;
}
}
}
}
struct NewGadget ng = {
LVGADX,LVGADY,
LVGADWIDTH, LVGADHEIGHT,
"",
NULL,
1,
PLACETEXT_BELOW,
NULL,
NULL
};
void main(int argc, char *argv[])
{
IntuitionBase = (struct IntuitionBase *) OpenLibrary ("intuition.library", 36);
if (IntuitionBase == NULL)
CleanExit(30);
ExecBase = (struct ExecBase *) OpenLibrary ("exec.library", 36);
if (ExecBase == NULL)
CleanExit(30);
GadToolsBase = (struct GadToolsBase *) OpenLibrary ("gadtools.library", 36);
if (GadToolsBase == NULL)
CleanExit(30);
WBScreen = LockPubScreen(NULL);
if (WBScreen == NULL)
CleanExit(30);
vi = GetVisualInfo (WBScreen, TAG_DONE);
if (vi == NULL)
CleanExit(30);
ExecLists[0]= &(ExecBase->PortList);
ExecLists[1]= &(ExecBase->DeviceList);
ExecLists[2]= &(ExecBase->LibList);
ExecLists[3]= &(ExecBase->TaskWait);
ExecLists[4]= &(ExecBase->ResourceList);
ExecLists[5]= &(ExecBase->MemList);
ng.ng_TextAttr = WBScreen->Font;
ng.ng_TopEdge= (WBScreen->Font->ta_YSize *4)/3;
ng.ng_VisualInfo = vi;
g0 = CreateContext (&gadlist);
ng.ng_Flags= PLACETEXT_IN;
ng.ng_GadgetID=NODEGAD_ID;
g0 = CreateGadget(LISTVIEW_KIND, g0, &ng,
GTLV_Labels,ExecLists[0],
/* GTLV_ShowSelected,NULL, */
/* GTLV_Active, 1, */
TAG_DONE);
if (!g0)
Bummer("ListView Gad failed");
ng.ng_Height = ng.ng_TopEdge; /* (WBScreen->Font->ta_YSize *4)/3; */
ng.ng_TopEdge += LVGADHEIGHT+ng.ng_Height;
ng.ng_Flags= PLACETEXT_IN;
ng.ng_GadgetID=REFRESHBUTTON;
/* ng.ng_GadgetText=" REFRESH ";
g1 = CreateGadget(BUTTON_KIND, g0, &ng, TAG_DONE); */
g1 = CreateGadget(CYCLE_KIND, g0, &ng, GTCY_Labels, CycleLabels,TAG_DONE);
if (!g1)
Bummer("Button Gad failed");
WBWindow = OpenWindowTags (NULL, WA_Title, (ULONG) "Amiga Lists",
WA_Flags, (ULONG)SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|ACTIVATE,
WA_InnerHeight, LVGADHEIGHT+4*ng.ng_Height,
WA_InnerWidth,LVGADWIDTH+2*LVGADX,
WA_AutoAdjust, TRUE,
WA_GimmeZeroZero, TRUE,
WA_IDCMP, (ULONG)CLOSEWINDOW|BUTTONIDCMP|ACTIVEWINDOW,
TAG_DONE);
AddGList (WBWindow, gadlist, -1, -1, NULL);
RefreshGList(WBWindow->FirstGadget, WBWindow, NULL, (UWORD)-1);
GT_RefreshWindow (WBWindow, NULL);
handleIDCMP (WBWindow);
}